#include <iostream>
#include <memory>
#include <stdio.h>
#include "udp_sever.hpp"
using namespace std;
using namespace ns_sever;

// 使用手册
static void Usage(string proc)
{
    cout << "Usage:\n\t" << proc << "port\n"
         << endl;
}

// 业务处理
string translation_atoA(string s)
{
    // 或者你想要不破坏原本的s 就重新定义一个字符串也行
    for (auto &e : s)
    {
        if (islower(e))
            e += ('A' - 'a');
    }
    return s;
}
static bool isPass(const string& s)
{
    if(s.find("rm")!=string::npos || s.find("cp")!=string::npos || s.find("kill")!=string::npos) return false; 
    //可以根据需要接着加禁用命令
    return true;
}
string excuteCommand(string command)
{
    // 1.安全检查
    if(isPass(command) == false) return "permission denied";
    // 2.该函数 创建管道 创建子进程 并且以读取文件的方式获取命令的执行结果
    FILE *p = popen(command.c_str(), "r");
    if (p == nullptr) return "none";
    char buffer[1024];
    string result="";
    while(fgets(buffer,sizeof(buffer),p) != NULL)
    {
        //解析命令
        result+=buffer; 
    }
    pclose(p);
    return result;
}

//有人发消息 把消息放在环形队列中 然后有人读消息 ——生消模型


// ./sever 8888
int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        Usage(argv[0]);
        exit(USAGE_ERR);
    }
    uint16_t port = atoi(argv[1]);
    unique_ptr<udp_Sever> udsv(new udp_Sever(port));
    udsv->start();
    return 0;
}